iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
自我挑戰組

Ruby名詞解釋總匯系列 第 11

# Day 11 : Ruby的「物件導向程式設計-方法」

  • 分享至 

  • xImage
  •  


圖片來源點這邊

方法 Method

*英文發音
首先來聽聽英文發音~。
Yes

什麼是方法呢?

在物件導向程式語言中,我們將程式法擬人化,讓設計者更方便使用程式碼,而「物件」本身含有「狀態」與「行為」,因此物件應有自己的運作方式。

當我們將訊息傳給物件,物件便會回應我們的需求,不一定需要了解物件內實際的運作方式。而這個允許我們要求物件執行的工作,就稱之為方法(method)。

如何使用方法?

*首先:定義方法

在Ruby世界,使用def...end來定義方法。
後面加上括號()可以傳入參數,若想要傳多個參數可以使用逗號,

def eat(food)
  puts "So delicious #{food}"
end

*第二:呼叫方法
方法定義好在那邊,其實是無法使用的,若我們要執行已經定義好的方法,可以利用:

  1. 點符號.來呼叫方法,接收的物件位於符號左側。
  2. 或是直接呼叫也可以。
  3. 定義方法時,Ruby會將方法名稱存成符號(symbol),可使用內建send來呼叫。
# 1.點符號
foo = "abc"
puts foo.length -> 3

foo = ["abcde", "fghij"]
puts foo.length -> 2

# 2.直接呼叫
def eat(food)
  puts "So delicious #{food}!"
end

eat("tofu") -> # So delicious tofu!

# 省略小括號直接呼叫
eat "tofu" -> # So delicious tofu!

# 3.send呼叫
def eat
  puts "So delicious!"
end

send(:eat) -> # So delicious!

PS:

  • length:可以計算長度
  • 省略小括號:Ruby開發者希望設計者可以輕鬆靈活使用程式碼,因此設計許多小巧思在Ruby裏頭,「省略小括號」便是其中之一,讓程式碼閱讀起來更像文章。因此大家在轉換語言時要注意其他程式語言可不像Ruby這麼省略唷!

變數與方法

由於Ruby省略小括號的關係,使得方法看起來跟區域變數長得一樣,若同一個範圍內遇到兩者,該如何分別印出呢?

eat = tofu # eat變數指向tofu

def eat    # 定義eat 方法有vegetables
  vegetables
end

put eat   -> # tofu
put eat() -> # vegetables

以上例子可以得知,兩者同時存在會以區域變數為優先,若要呼叫方法,加上()就可以囉!

參考資料


上一篇
Day 10 : Ruby的「物件導向程式設計-類別」
下一篇
Day 12 : Ruby的「註解、流程控制」
系列文
Ruby名詞解釋總匯14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言